Flask এবং FastAPI দুটি জনপ্রিয় Python ফ্রেমওয়ার্ক যা দিয়ে RESTful APIs তৈরি করা যায়। Flask একটি মিনি-মাল ও কমপ্যাক্ট ফ্রেমওয়ার্ক হলেও, FastAPI দ্রুত এবং আধুনিক ফিচারসহ RESTful API তৈরি করার জন্য উচ্চ পারফরম্যান্স প্রদান করে। নিচে আমরা Flask এবং FastAPI ব্যবহার করে REST API তৈরি করার জন্য ধাপে ধাপে উদাহরণ দেখাব।
১. Flask দিয়ে REST API তৈরি
Flask একটি মিনি-মাল ফ্রেমওয়ার্ক, যা API তৈরি করা সহজ এবং খুবই হালকা। Flask দিয়ে API তৈরি করতে বেশ কয়েকটি ধাপ রয়েছে।
ধাপ ১: Flask ইনস্টল করা
প্রথমে Flask ইনস্টল করতে হবে:
pip install Flask
ধাপ ২: Flask দিয়ে REST API তৈরি
এখন একটি সিম্পল REST API তৈরি করা যাক। এটি একটি GET এবং POST রিকোয়েস্ট হ্যান্ডল করবে।
from flask import Flask, request, jsonify
app = Flask(__name__)
# GET রুট
@app.route('/api/hello', methods=['GET'])
def hello():
return jsonify({"message": "Hello, World!"})
# POST রুট
@app.route('/api/echo', methods=['POST'])
def echo():
data = request.get_json() # POST রিকোয়েস্ট থেকে JSON ডেটা নেয়ার জন্য
return jsonify({"received_data": data}), 201
if __name__ == '__main__':
app.run(debug=True)
ব্যাখ্যা:
- GET রুট:
/api/helloURL এGETরিকোয়েস্ট পাঠালে"message": "Hello, World!"রেসপন্স ফেরত দিবে। - POST রুট:
/api/echoURL এPOSTরিকোয়েস্ট পাঠালে তা JSON ডেটা গ্রহণ করে এবং"received_data"সহ রেসপন্স পাঠাবে।
ধাপ ৩: Flask API চালানো
এখন Flask অ্যাপ্লিকেশনটি চালানোর জন্য নিচের কমান্ডটি চালান:
python app.py
এটি http://127.0.0.1:5000 এ চালু হবে এবং আপনার API অ্যাক্সেস করা যাবে।
২. FastAPI দিয়ে REST API তৈরি
FastAPI হলো একটি দ্রুত এবং আধুনিক Python ফ্রেমওয়ার্ক যা ASGI (Asynchronous Server Gateway Interface) ভিত্তিক এবং type hints ব্যবহার করে। এটি মডেলিং, টাইপ চেকিং এবং ডকুমেন্টেশন তৈরি করতে সহায়তা করে। FastAPI পেপার API পারফরম্যান্সের জন্য খুবই জনপ্রিয় এবং Flask এর তুলনায় দ্রুত।
ধাপ ১: FastAPI ইনস্টল করা
FastAPI ইনস্টল করতে:
pip install fastapi
pip install uvicorn
uvicorn হলো ASGI সার্ভার যা FastAPI অ্যাপ চালানোর জন্য ব্যবহৃত হয়।
ধাপ ২: FastAPI দিয়ে REST API তৈরি
এখন FastAPI দিয়ে একটি সিম্পল API তৈরি করা যাক।
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
# Pydantic মডেল ডিফাইন করা (যেটি POST রিকোয়েস্টের JSON ভ্যালিডেশন হবে)
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
# GET রুট
@app.get("/api/hello")
def read_root():
return {"message": "Hello, World!"}
# POST রুট
@app.post("/api/echo")
def create_item(item: Item):
return {"received_item": item}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
ব্যাখ্যা:
- Pydantic মডেল: FastAPI JSON ডেটা ভ্যালিডেশনের জন্য Pydantic মডেল ব্যবহার করে। এখানে,
Itemক্লাসটিname,description,price, এবংtaxপ্রপার্টি ধারণ করছে। - GET রুট:
/api/helloURL এGETরিকোয়েস্টে"message": "Hello, World!"রেসপন্স প্রদান করবে। - POST রুট:
/api/echoURL এPOSTরিকোয়েস্টের মাধ্যমে প্রাপ্ত JSON ডেটাকেItemমডেল অনুযায়ী ভ্যালিডেট করে রেসপন্স পাঠাবে।
ধাপ ৩: FastAPI API চালানো
FastAPI অ্যাপ চালানোর জন্য uvicorn ব্যবহার করা হয়। নিচের কমান্ডটি চালান:
uvicorn app:app --reload
এটি http://127.0.0.1:8000 এ চালু হবে এবং আপনার API অ্যাক্সেস করা যাবে।
অটোমেটেড ডকুমেন্টেশন:
FastAPI নিজেই স্বয়ংক্রিয়ভাবে API ডকুমেন্টেশন তৈরি করে। আপনি http://127.0.0.1:8000/docs এ Swagger UI দেখতে পারবেন এবং API রিকোয়েস্ট পাঠাতে পারবেন।
Flask এবং FastAPI তুলনা
| বৈশিষ্ট্য | Flask | FastAPI |
|---|---|---|
| পারফরম্যান্স | স্লো (ব্যথিত I/O অপারেশন) | দ্রুত (আসিনক্রোনাস, অত্যন্ত পারফরম্যান্স) |
| ডকুমেন্টেশন | অটোমেটিক ডকুমেন্টেশন নেই | স্বয়ংক্রিয় Swagger UI ডকুমেন্টেশন |
| টাইপ হিন্টিং | নেই | পিডানটিক এবং টাইপ হিন্টিং দিয়ে API ডিফাইন করা |
| রাউটিং সিস্টেম | সিঙ্ক্রোনাস | আসিনক্রোনাস (সর্বোত্তম পারফরম্যান্স) |
| ইনস্টলেশন | সহজ এবং কমপ্যাক্ট | ইনস্টলেশন কিছুটা বেশি, তবে আধুনিক ফিচার আছে |
| ব্যবহার | সাধারণ ওয়েব অ্যাপ্লিকেশন এবং ছোট API এর জন্য | বৃহৎ, স্কেলযোগ্য API এবং অ্যাসিনক্রোনাস কাজের জন্য |
সারাংশ:
- Flask হলো একটি মিনি-মাল এবং হালকা ওয়েব ফ্রেমওয়ার্ক, যা ছোট এবং সাধারণ REST APIs তৈরি করার জন্য আদর্শ।
- FastAPI হলো একটি দ্রুত, আধুনিক ফ্রেমওয়ার্ক যা API পারফরম্যান্স এবং টাইপ হিন্টিং এর সাথে ডকুমেন্টেশন তৈরি করতে সহায়ক।
যদি আপনার API পারফরম্যান্স খুব গুরুত্বপূর্ণ হয় এবং আপনি টাইপ হিন্টিং এবং অটোমেটিক ডকুমেন্টেশন চান, তবে FastAPI বেছে নিন। অন্যদিকে, যদি আপনি একটি সোজা এবং সাধারণ API চান, তবে Flask একটি ভালো পছন্দ হতে পারে।
Read more